/*
    基于服务注册中心的rpc调用测试：rpc服务端
*/

#include "../../client/rpc_client.hpp"

void callback(const Json::Value &result)
{
    std::cout << "callback result: " << result << std::endl;
}

int main()
{
    SetDefaultLogLevel(Level::INFO);
    // 1.创建rpc客户端
    ns_jsonrpc::ns_client::RpcClient rpcClt(true, "127.0.0.1", 8081); // 开启服务注册中心

    // 2.发送rpc请求
    // // 2.1 同步请求
    // Json::Value params;
    // params["num1"] = 1;
    // params["num2"] = 1;
    // Json::Value result;
    // rpcClt.call("add", params, result);
    // std::cout << "sync result: " << result << std::endl; // 打印结果
    // std::this_thread::sleep_for(std::chrono::seconds(60));

    // // 2.2 异步请求
    // Json::Value params2;
    // params2["num1"] = 2;
    // params2["num2"] = 2;
    // ns_jsonrpc::ns_client::RpcCaller::JsonAsyncResponse result2;
    // rpcClt.call("add", params2, result2);
    // std::thread td([&result2](){
    //     std::this_thread::sleep_for(std::chrono::seconds(5));
    //     std::cout << "[son thread] async result: " << result2.get() << std::endl;
    // });
    // std::cout << "[father thread] wait... " << std::endl; // 打印结果
    // std::this_thread::sleep_for(std::chrono::seconds(60));

    // 2.3 回调
    Json::Value params3;
    params3["num1"] = 3;
    params3["num2"] = 3;
    rpcClt.call("add", params3, callback);
    std::this_thread::sleep_for(std::chrono::seconds(60));
    return 0;
}